package com.java1234.util;

import org.apache.shiro.codec.Base64;
import org.apache.shiro.crypto.hash.Md5Hash;

import java.util.Random;

/**
 * 加密解密
 * @author : 章仕烜
 * @create : 2019/12/22
 **/
public class CryptographyUtils {
    /**
     * Base64加密
     * @param str
     * @return
     */
    public static String encBase64(String str){
        return Base64.encodeToString(str.getBytes());
    }

    /**
     * Base64解密,Base64是对称的
     * @param str
     * @return
     */
    public static String decBase64(String str){
        return Base64.decodeToString(str.getBytes());
    }

    /**
     * md5加密
     * MD5是单向非对称，如果加盐的话不好破解
     * @param str,salt(盐，MD5加密参数）
     * @return
     */
    public static String encMd5(String str,String salt){
        Md5Hash md5Hash = new Md5Hash(str,salt);
        return md5Hash.toString();
    }

    public static void main(String[] args) {
        Random random = new Random();
        System.out.println("base64加密:" + CryptographyUtils.encBase64("123456"));
        System.out.println("base64解密:" + CryptographyUtils.decBase64(CryptographyUtils.encBase64("123456")));
        System.out.println("md5加密:" + CryptographyUtils.encMd5("123456", String.valueOf(random.nextInt())));
    }
}
